﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BackgrounderService
{
    public enum State {Start,Stop};

    public interface IPlugin
    {
        void Initialization(HookProxy hp);

        void Start();

        void Stop();

        void Unload();

        KeyValuePair<string, SettingHandler>? GetSettingCallBack();

        string Name { get; }

        State state { get;}

    }

    public class SysPerfArgs : EventArgs
    {
        public SysPerfArgs(int cpu, int diskwrite, int diskread, int memory, String Time)
        {
            this.cpu = cpu;
            this.diskread = diskread;
            this.diskwrite = diskwrite;
            this.Time = Time;
            this.memory = memory;
        }
        public readonly double cpu;
        public readonly double memory;
        public readonly int diskwrite;
        public readonly int diskread;
        public readonly String Time;
    }
    public class MouseEventArgs : EventArgs
    {
        public MouseEventArgs(string ProcessName, short MouseXPos, short MouseYPos, String Time)
        {
            this.ProcessName = ProcessName;
            this.MouseXPos = MouseXPos;
            this.MouseYPos = MouseYPos;
            this.Time = Time;
        }
        public readonly string ProcessName;
        public readonly short MouseXPos;
        public readonly short MouseYPos;
        public readonly String Time;
    }
    public class KeyEventArgs : EventArgs
    {
        public KeyEventArgs(string ProcessName, int VKey, String Time)
        {
            this.ProcessName = ProcessName;
            this.VKey = VKey;
            this.Time = Time;
        }
        public readonly string ProcessName;
        public readonly int VKey;
        public readonly String Time;
    }

    public delegate void MouseEventHandler(MouseEventArgs e);
    public delegate void KeyEventHandler(KeyEventArgs e);
    public delegate void SysEventHandler(SysPerfArgs e);

}
